package com.lvyuely.common.web.core.dao;

import java.io.Serializable;
import java.util.List;

/**
 * Simple to Introduction
 * <pre>
 * <b>项目</b> :  lvyuely-archetype-webapp
 * <b>包名</b> :  com.lvyuely.common.web.core.dao
 * <b>类名</b> :  AbstractService
 * <b>描述</b> :
 * <b>版权</b> :  Copyright (c) 1999-2015 广联达软件股份有限公司
 * </pre>
 *
 * @author :   lvyue
 * @version :  1.0
 * @date :     15/1/8 09:06
 */
public interface AbstractDao<E, PK extends Serializable> {

    /**
     * 保存实体信息
     *
     * @param obj 保存实体信息
     */
    public void save(E obj);

    /**
     * 根据对象删除数据
     *
     * @param obj 要删除的实体信息
     * @return
     */
    public long delete(E obj);

    /**
     * 根据数据库主键删除
     *
     * @param pk 数据库主键
     * @return
     */
    public long delete(PK pk);

    /**
     * 更新数据
     *
     * @param obj 实体信息
     * @return
     */
    public long update(E obj);

    /**
     * 通过数据库主键查询信息
     *
     * @param pk 数据库主键
     * @return
     */
    public E get(PK pk);

    /**
     * 查询所有数据信息
     *
     * @return
     */
    public List<E> findAll();

}
